/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.medical.controlador;

import com.ec.medical.entidades.Usuario;
import com.ec.medical.exepciones.UsuarioException;
import com.ec.medical.servicio.UsuarioServicioLocal;
import com.ec.medical.util.EncriptacionUtil;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.apache.log4j.Logger;

/**
 *
 * @author Administrador
 */
@ManagedBean
@RequestScoped
public class CambioContrasenaControlador extends ControladorBase {

    private Logger LOG = Logger.getLogger(CambioContrasenaControlador.class.getName());
    private Usuario usuario;
    private String mensaje;
    @EJB
    private UsuarioServicioLocal usuarioServicio;

    /**
     * Creates a new instance of CambioContrasenaControlador
     */
    public CambioContrasenaControlador() {
        usuario = new Usuario();
    }

    public void iniciarDatos() {
    }

    @Override
    protected void imprimirLogInfo(String mensaje) {
        LOG.info(mensaje);
    }

    @Override
    protected void imprimirLogError(String mensaje) {
        LOG.error(mensaje);
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public void modificarContrasena() {
        Usuario usuarioTmp = usuarioServicio.obtenerUsuarioPorUserName(usuarioLogueado());

        if (validarContrasenaActual(usuarioTmp)) {
            try {
                usuarioTmp.setPassword(EncriptacionUtil.encriptarMD5(usuario.getPasswordNuevo()));
                usuarioServicio.editarUsuario(usuarioTmp);
                infoMessage("Contrasena actualizada");
            } catch (UsuarioException ex) {
                errorMessage(ex.getMessage());
            }
        } else {
            errorMessage(mensaje);
        }
    }

    private boolean validarContrasenaActual(Usuario usuarioTmp) {
        mensaje = "La contrasena actual es incorrecta";
        return usuarioTmp.getPassword().equals(EncriptacionUtil.encriptarMD5(usuario.getPassword()));
    }
}
